#include <iostream>
#include <future>
#include <thread>
#include <memory>

int add(int a, int b)
{
    std::cout <<"in\n";
    return a + b;
}

int main()
{
    //使用智能指针管理packaged_task对象
    auto task = std::make_shared<std::packaged_task<int(int, int)>>(add);

    //获得关联的future对象
    std::future<int> res = task->get_future();

    std::thread th([task](){
        (*task)(1, 2);
    });

    std::cout << res.get() << std::endl;

    th.join();

    return 0;
}